// 创建用户集合

// 引入 mongoose 第三方模块
const mongoose = require('mongoose');
// 引入包
const Joi = require('joi');

// 创建用户集合规则
const userSchema = new mongoose.Schema({
    // 用户名
    username: {
        type: String,       //  存储的类型
        required: true,     //  设定参数必须传
        minlength: 2,       //  设置最短两个字符
        maxlength: 20       //  设置最长20个字符
    },
    // 邮箱
    email: {
        type: String,
        unique: true,       //  设置不能有相同的邮箱
        required: true
    },
    // 密码
    password: {
        type: String,
        required: true
    },
    // 角色 admin = 超级管理员  normal = 普通用户
    role: {
        type: String,
        required: true
    },
    // 状态 0为启用状态 1为禁用状态
    state: {
        type: Number,
        default: 0
    }
})

// 创建集合
const User = mongoose.model('User', userSchema);

// 用户验证规则
const ValidateUser = User => {
    const schema = {
        username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合验证规则~')),
        email: Joi.string().min(2).email().required().error(new Error('邮箱不符合验证规则~')),
        password: Joi.string().regex(/^[a-zA-Z0-9]{3,20}$/).required().error(new Error('密码不符合验证规则~')),
        role: Joi.string().valid('admin', 'normal').required().error(new Error('角色中非法~')),
        state: Joi.number().valid(0, 1).required().error(new Error('状态值非法~'))
    };
    return Joi.validate(User , schema);
}

/*
    创建一个用户用于调试
    User.create({
        username: 'lisi',
        email: 'lisi@qq.com',
        password: '123456',
        role: 'admin',
        state: 0
    }).then(()=> {
        console.log('用户创建成功');
    }).catch(()=> {
        console.log('用户创建失败');
    })
*/

// 将用户集合作为模块成员进行导出
module.exports = {
    User,
    ValidateUser
}


